﻿//https://ac.nowcoder.com/acm/problem/227310
//判断两数相乘是否是素数。
//◦不能直接乘起来然后判断，因为数据量太⼤了，不仅存不下，⽽且会超时；
//◦因此根据素数的性质，分类讨论。
C++ 算法代码：
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LL;
bool isprim(LL x)
{
	if (x < 2) return false;
	for (int i = 2; i <= sqrt(x); i++)
	{
		if (x % i == 0) return false;
	}
	return true;
}
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		LL a, b;
		cin >> a >> b;
		if ((a == 1 && isprim(b)) || (b == 1 && isprim(a)))
		{
			cout << "YES" << endl;
		}
		else
		{
			cout << "NO" << endl;
		}
	}

	return 0;
}

//https://www.nowcoder.com/practice/562630ca90ac40ce89443c91060574c6?tpId=308&tqId=40490&ru=/exam/oj
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2e5 + 10;
int n, k;
int arr[N];
int main()
{
	cin >> n >> k;
	for (int i = 0; i < n; i++) cin >> arr[i];
	sort(arr, arr + n);
	int left = 0, right = 0, ret = 1;
	while (right < n)
	{
		while (arr[right] - arr[left] > k)
		{
			left++;
		}
		ret = max(ret, right - left + 1);
		right++;
	}
	cout << ret << endl;
	return 0;
}

//https://www.nowcoder.com/practice/672ab5e541c64e4b9d11f66011059498?tpId=230&tqId=39761&ru=/exam/oj

//算法思路：
//经典两个字符串之间的 dp 问题。
//1. 状态表⽰： dp[i][j] 表⽰：字符串 s1 中[0, i] 区间与字符串 s2 中[0, j] 区间内所有
//的⼦序列中，最⻓公共⼦序列的⻓度是多少。
//2. 状态转移⽅程：根据最后⼀个位置的字符情况，划分问题：
//a.s1[i] == s2[j]：dp[i][j] = dp[i - 1][j - 1] + 1；
//b.s1[i] != s2[j]：dp[i][j] = max(dp[i - 1][j], do[i][j - 1])。
//为了防⽌越界，我们把字符串的起始位置从 1 开始计算。
//C++ 算法代码：
#include <iostream>
using namespace std;
const int N = 1010;
int n, m;

char s1[N];
char s2[N];
int dp[N][N];
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> s1[i];
	for (int i = 1; i <= m; i++) cin >> s2[i];
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			if (s1[i] == s2[j]) dp[i][j] = dp[i - 1][j - 1] + 1;
			else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
		}
	}
	cout << dp[n][m] << endl;
	return 0;
}